Web制作ではあまりないかもしれませんが、Webアプリでは必ず何らかの設定が画面が必要になります
いわゆる管理画面、コンパネ周りの設計です
つまり、システムに必要な文字列や数字、例えばパスワードとか、初期値とか、をシステムに記憶させる設定画面です
OneThird CMSでは、そういった場合 snippet_std_setting を使うと比較的簡単に設定画面を作れるのですが
実はもっと簡単に作る方法があります
それはembedプラグインを使う方法です
この方法だと、プログラムを組まなくても作成することができます
例えば、仮にmax_sizeという値を記憶したい場合は
設定用のページ(普通のページでOK)を作成しページ編集で、
{$plugin("embed","number","name:max_size","page:top")} と書けばOKです
驚くほど簡単です
データは、'page:top'と書いてあるため、トップページのメタデータとして記録されます
実際に書き込まれたか確認する場合はメタデータマネージャを使って確認してください
そして記録されたデータをプログラムで呼び出す場合は
以下の2行で読み出せます
$meta = get_theme_metadata(); $max_size = (int)$meta['plugin_embed']['max_size'];
以上はもっとも簡単な設定画面ですが、場合によっては初期値や最大値、最小値等細かい操作をしたい場合があります
その場合は、多少難しくなりますが、テンプレートモジュールを作成し、以下の様にプログラムで書けばOKです
ポイントは、$pluginを使うのではなく、$plugin_procを使うことです
$buff = <<<EOT
{$plugin_proc('embed','start-edit')}
<p>{$plugin_proc('embed','number','name:max_size','page:top')}</p>
<p>{$plugin_proc('embed','save')}</p>
EOT;
$html['article'][] = $buff;
その上で、データ修正時のイベント(onbefore_modified)をフックしてください
サンプルは、最小値を設定したものです
$plugin_ar[ EMBED_ID ]['onbefore_modified'] = 'my_embed_onbefore_modified';
$buff = <<<EOT
{$plugin_proc('embed','start-edit')}
<p>{$plugin_proc('embed','number','name:max_size','page:top')}</p>
<p>{$plugin_proc('embed','save')}</p>
EOT;
$html['article'][] = $buff;
function my_embed_onbefore_modified(&$r)
{
global $params,$database;
//$rにはページデータが収納
if ($r['meta']['plugin_embed']['max_size'] < 10) {
$r['meta']['plugin_embed']['max_size'] = 10;
}
}
※ フックの設定は、plugin_procを呼び出す前に設定してください
このようにOneThird CMSでは、テンプレートタグをテンプレートに使う以外にも
ページ編集やプログラム中でほぼ同じ形でかけるので、うまく利用すると省力化することができます
例:文字列をエンティティ化する
$a = "{$ut->safe_echo($str)}";
是非うまく活用してください